{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "from sklearn.datasets import make_blobs\n",
    "from sklearn.cluster import KMeans"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# make_blobs：生成聚类的数据集\n",
    "# n_samples：生成的样本点个数，n_features：样本特征数，centers：样本中心数\n",
    "# cluster_std：聚类标准差，shuffle：是否打乱数据，random_state：随机种子\n",
    "X, y = make_blobs(n_samples=150, n_features=2,centers=3, cluster_std=0.5,shuffle=True, random_state=0)\n",
    "\n",
    "# 散点图\n",
    "# c：点的颜色，marker：点的形状，edgecolor：点边缘的形状，s：点的大小\n",
    "plt.scatter(X[:, 0], X[:, 1],c='white', marker='o',edgecolor='black', s=50)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 定义模型\n",
    "# n_clusters：要形成的簇数，即k均值的k，init：初始化方式，tot：Frobenius 范数收敛的阈值\n",
    "model = KMeans(n_clusters=3, init='random',n_init=10, max_iter=300, tol=1e-04, random_state=0)\n",
    "# 训练加预测\n",
    "y_pred = model.fit_predict(X)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAWoAAAD4CAYAAADFAawfAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/MnkTPAAAACXBIWXMAAAsTAAALEwEAmpwYAAA/aElEQVR4nO2dd3iUZdaH72eSkAqEgILSAqEI0hREkOgCNgRFiUp0cZf1C+IqKiyrgggiiAoIiKxg2dhQWYKAWCgCSkRWUUCRIj1L730SQgiZ5/sjmSGTTM9Mpp37uuaCzPvO+55nIL85c55TlNYaQRAEIXAx+NsAQRAEwTEi1IIgCAGOCLUgCEKAI0ItCIIQ4IhQC4IgBDiRvrhorVq1dHJysi8u7XXy8vKIj4/3txleJdTWFGrrAVlTMFDZ61m3bt1xrfVlto75RKiTk5NZu3atLy7tdbKzs+natau/zfAqobamUFsPyJqCgcpej1Jqj71jEvoQBEEIcESoBUEQAhwRakEQhADHJzFqQRBCk8LCQvbv38/58+fLHatevTpbtmzxg1W+wVfriYmJoV69ekRFRbn8GhFqIahITErkzKkzdo9Xr1Gd0ydPe+11gjX79++natWqJCcno5SyOmY0GqlataqfLPM+vliP1poTJ06wf/9+GjVq5PLrRKiFoOLMqTNMPTnV7vEhSUO8+rpQx90PsPPnz9sUacE1lFLUrFmTY8eOufU6EWpBCGM8+QATka4Ynrx/spkoCD4mMSkRpZTVY926dZa/JyYl+ttEIcARj1oQfIwtr/WKX6+wPBeuYRdv8uKLL5KQkMDTTz/t1utOnz7NrFmzePzxxyt0/zfffJOpU6eya9cujh07Rq1atSp0vbKIRy0Igtex9S2i9CNQvkWcPn2aGTNmuPUarTUmk8nquS5durB8+XIaNmzoTfMsiFALguB1zN8i7D0cbWA6Y+bMmbRp04a2bdvyl7/8pdzxrl27WlpYHD9+HHPfoc2bN9OxY0fatWtHmzZt2LFjB8OHD2fXrl20a9eOZ555BoDXXnuN6667js6dOzN69GgAdu/eTfPmzfnrX/9Kq1at2Ldvn9U9r7nmGnzZ30hCH4IgBA2bN29m3Lhx/Pjjj9SqVYuTJ0+6/Nq3336bwYMH069fPy5cuEBRURHjx49n06ZNrF+/HoClS5eyY8cOfvnlF86ePUu/fv1YuXIlDRo0YMeOHXz00Ud06tTJR6uzjwi1EFRUr1HdYUy3eo3qXn2dEFh899133H///ZYYcFJSksuv7dy5My+//DL79+8nLS2Npk2bljtn6dKlLF26lGuuuQaTycS5c+fYsWMHDRo0oGHDhn4RaRChFoIMT4tSAr2YpXTKVmUW3zj7ADNEGkhMSgz49680kZGRlhhy6QrKP//5z1x//fUsXLiQnj178s4779C4cWOr12qtee6553j00UetCl52797t1xauItSCEACUzgqpzCyQ0ydPo5QKmmKg7t2706dPH4YOHUrNmjU5efJkOa86OTmZdevW0bFjR+bOnWt5Picnh8aNG/PUU0+xd+9eNmzYQNu2bTEajZZzbr/9dkaNGkW/fv0AOHDggFul3r7CJaFWSu0GjEARcFFr3cGXRglCKGHLa500aRJP31KcShaXGOcHq4KTq6++mueff54//elPREREcM011/Dhhx9anfP000/Tt29f3n33XXr16mV5fs6cOXz88cdERUVRp04dRowYQVJSEl26dKFVq1bccccdvPbaa2zZsoXOnTtjMpmoVq0an3zyCREREQ7tmjZtGhMnTuTw4cO0adOGnj17kpmZ6bV1K62185OKhbqD1vq4Kxft0KGDlsEB/iPU1hRq61FKkbU8i0PXHrJ5fEjSEFz5vfSmPc48arM9W7ZsoUWLFjbPKx0qcOeagYove5fYeh+VUuvsOcES+hAED5AmT46RzVvv4qpH/T/gFKCBd7TW79o4ZyAwEKB27drtZ8+e7WVTfUNubi4JCQn+NsOrhNqaAnE969ato367+naP71u/j/bt29t9beNmjSmMK3T7tZ6wfv16ioqKHJ7j6lqqV69OkyZNbJ5XVFTkNEQQTPhyPTt37uTMGesP+m7dutn1qF0V6rpa6wNKqcuBZcCTWuuV9s6X0Id/CbU1BeJ6KvLVvrJDH67Y6u3QRygQSKEPlyoTtdYHSv48CnwOdKygnYLgN4KlvFkQzDiNUSul4gGD1tpY8vfbgLE+t0wQfIS/e1NXr1Gdfev3WbI+bB2vTAyRBoknBziueNS1gVVKqd+BX4CFWuslvjVLECqOPc/Z35w+edph7PPMqTOV6tWbLprQWtt9hPOmaKDg1KPWWucAbSvBFkHwKqU95xGNR3Du9DnLsbIeZFxiHK/kvFJpthUVFQVNkUkw4O82p/369WPt2rVERUXRsWNH3nnnHa8Wykh6nhAWnDt9ToTRDxiNRrKyssjZtYPGKU1JT08PqA1Hc5tTd4Ta/E3DYLgUkOjXrx+ffPIJUFyqnpmZyWOPPeY1O6XNqSB4gDlP2N5D4rqwatUqUpLrsui9IcTvmsii94aQklyXVatWVei6gdjmtGfPnpbQWseOHdm/f3+F1lgW8agFwQOCKW7rj+ITo9FI2t09+XSgkVtbm5/NY9lGSLu7Jzl7DnqUGx/obU4LCwv5+OOPeeONN9xemyPEoxaEAMVbKYOnT56u9M3CrKwsUpuZSol0Mbe2htRmJrKysjy6bkXbnL7yyitMmDCBPXv2EBsbW+6c0m1Ob7zxRrZu3cqOHTsAXGpz+vjjj3PTTTdx4403urEq54hHLfiEYCyxNnudgRK28FdHPW+Qs2sH7evn2Tx2bb08cnbt9Nm9/dXmdMyYMRw7dox33nnHyysSoRZ8hL9zlT0h0JsEBRONU5qyKDseKC/Wv+6Pp1cP22XozgjUNqeZmZl88803fPvtt1abjN5ChFoIWZzFZv1JRESEQ9uCvfVpeno6I4YNZdlGrMIfyzbCqu0GZqane3TdQG1z+ve//52GDRvSuXNnANLS0njhhRc8WqMtXOr14S7S68O/BMKavNnm0tZ6XA2tmO0om0dt7/zKouyagqUtqDu9PlatWkXa3T1JbWbi2np5/Lo/nlXbDcz/YhGpqamVZbLHBFKvD/GohaDE3dCKvWIWcyrdmVNn7FYteiLizj5IJk2eRLdu3TBEGjBdNFlsqezCG1+SmppKzp6DJXnUO+nVowkz09MDrhNiMCBCLYQ0rqSm+SKe7uyaF9+/CGARaTPnTp9j6OVDyz0PxV53IG7COiIhIYGMjAx/mxH0iFALIY0rolYZ/T8K8goY1eg5LpQI8KRJk8qdY/amHbUdDdSYu+BbRKgFoRLY+u1WLlw08fBHD9P2rrZc8esV5cRYRFiwhwi14BNkFJM1f2St4Vrgj6y1tL1LepwJ7iFCLfiEYIqjVgRnm4YAFwsusnnFNlYBqd9t5WLBxQrdMyIqwmYM20ywxbEF54hQC2GPs8b5hkj7BQxnTp0hLjHOYerftuxttIqKoO35Qq6OMrDt+23Ur2V/RqEzTBdNQVdM5Gv83eY0IyODtWvXorWmWbNmfPjhh17NbhGhFoISb4ZWKip85haqx/93nE2LNwGwYOQCsmdkA/DHF+t53FhcyvyAsYC3pizj+n9cbzkeiqxbt47ZDvp5PJCe7tUBvp7irTanr7/+OtWqVQNg6NChvPnmmwwfPtxrdkpTJiEo8UejIWfknshl+csLWTVqAY8CV4xcwBUjF9BrzW7+WnJOf6D3b3upcvA09cd8Rd0xX7Fq1AKWv7yw0u31JXv27GH6jBkcKorksCnK8jhUFMn0GTPYs2ePx9cOxDanZpHWWpOfn+/1TCLxqAXBSyR3SGbo6ueY/dB7bNt1lP+cK6ROmXNqAK8VmsjWcEthEX+OiyLpqjo88EkGY9uOZUjSEIehmNIFMoHMPffcQ8OGyTRs3pL2f7rZ8vy67OUkJzfinnvu8ei6gdzm9OGHH2bRokW0bNmSyZMne7Q+e4hHLQheJKl+Eo9+O5SYR26idUwUi+2cdxZoAaw6V8j2jQcY23Ys1WtUR2tNUWGR3W8Kroq0vyerGwwGXhrzIvNnTLGUvmutmTdjCi+NedHjxkWB3Ob0gw8+4ODBg7Ro0cLjNq72EKEWghJ7g2v9JUyliYiMoMfou+g7+xHuUpBf5ng+sAM4A5jzP7ydqTH15FSmnpxqae5kLpEv+4isEumz9zEtLQ0KL/Dryu8A+PX7bzEUXaRPnz7eWKJdHLU5/fLLL4mNjaVnz55899135V5rbnO6fv16/vvf/7Jz505LZaWzNqdQ3GzrgQceYN68eV5aTTES+hCCkmBoo6oMiubx0cTmFlg9HwvEGBRPfPUETboUt/v0lb2uzIr01fto9qpHjXuFa2/qzrwZU3i5At40BGabU601u3btokmTJmit+fLLL7nqqqs8XqMtRKgFwUNKe5u2BC0uKoJhRSY08AEwJrYKo89f4GENSSbNprnrLELtKtVrVMdoNAZNi9S0tDRGjX6RzJdGeMWbDsQ2p1pr+vfvz9mzZ9Fa07ZtW956660KrbMsItRC2OMs1c8QabC7i2/PGzWZTDxfayi3A32AZUD62/0YPXIBi4/l8jdg0xfr6T35frc8THvhEWdtUv2F2au+//77mTt3rlea6vfv35/+/ftbPffiiy9a/n7VVVexYcMGy8/jxo0DYPjw4TZT5mbNmmX18+DBgxk8eHC5NqebNm2yaY/BYOC///2v2+twBxFqIexxJH4AU45OsXnckbjvWbsHE/BgXBy39+3LuQ8/pO1dbWlxcwu+fnYuOQZFnvE8e9ftJfm6ZKv7hVplYVpaGu+//77PY9OhjGwmCoIP+GPRRjQw+ZNPeOuDDyzPV4mrQtqbf6Zag5pEVIlk88JLnp95A9BZSXqwYTAYePjhh30yoipckHdOEHzAdQ914gLY9SJjE2N5+pfnue4hx1OtBQEk9CEIgOPmSp5MXrm8yeXO71k30eXrOSOQ50Pm5eWR1rs3n3/1FXFxgbPRGUy4LNRKqQhgLXBAa32n70wSBOd4u42qr9P9yto7adIknr7lUgOhimZq2ItpJyYlOrQ9IsrxkF1vtKNdsmQJS7/7jiVLlhTnVgtu445HPRjYAlTzpgHB0rxFCCyCbbOttL1KKeq3q1/ug6H0AF5bWSaebDIGwvs0b+ZMri35U4TaM1wSaqVUPaAX8DIw1JsGmJu3pD36lNV/Tq0189+ZRudOnUSohYAkLjHOq96oK8UpZXF1Gru/KCgoYPGyZWQDXZcupaCggOjoaL/ZY8bT9qZr165l5syZTJs2rdyx5ORk1q5daylv9ybKlRH0Sqm5wKtAVeBpW6EPpdRAYCBA7dq128+ePdtlIzZv/oMatesQVypn8ZzRyKmjh7m6ZUuXr+MJubm5ITcVOdTWVBnrWbduHfXb2e8RvW/9PpvPGyIM1G1d13KOK07FunXraNysMYVxheXu4cyGstd3xW5vOjrVq1enSRPbRTpFRUXlCkMWL17MmwMGsNJo5MaqVXnqvffo0aOH1+zxlD179tC3b19+/vnncscuXrxIZGSkzfU4olWrVnz//ffUrFnT6bk7d+7kzBnrD9hu3bqt01p3sHW+U49aKXUncFRrvU4p1dXeeVrrd4F3ATp06KC7drV7ajmOHz/OqHHjGDf7a5RSaK0Zm96Ll18YiTvX8YTs7Gyf36OyCbU1VcZ6unXr5tCbffqWpy0Ty+3hqvd6T9o9jHp+lM0m985sKOtYuWK3K86Yq2zZssWqCMTMrl27mDNnDjExMVbPf/HZZ9xXUqJ9n9HIjKlT2b9/f7nX9+7dm5SUFJftmDlzJpMmTUIpRZs2bZgyZQp///vf2bt3LwBTp06lS5cuvPjii+zdu5ecnBz27t3LkCFDeOqppxg3bhz/+9//uPHGG7n11lvp1asXo0aNokaNGmzdupUNGzbw2GOP8fvvvxMZGcmUKVPo1q0b2dnZTJo0ia+//poTJ07w4IMPcuDAATp37gwUT103GAz07duX/fv3U1RUxKhRo0hPT7eyPyYmhmuuucbl9boS+ugC9FZK9QRigGpKqU+01g+5fBcnmMtMf135He3/dHOlNW8RBHfwVgjh9MnTZGdnWwTUXFUYqFkbrnD8+HEmvvQSkefP8+eoKEvebyetMXeM/itwaM0a9pb0ijYBswoLuRgbyw033OCyUNtqdfrEE0/wj3/8g9TUVPbu3cvtt9/Oli1bANi6dSsrVqzAaDTSvHlzHnvssXLtTbOzs/n111/ZtGkTjRo1YvLkySil2LhxI1u3buW2225j+/btVnaMGTOG1NRUXnjhBRYuXMh7770HFG+eXnnllSxcWNxjvKzn7AlOhVpr/RzwHECJR/20N0UafNO8RRCEyuP6669n1Zo1PPrQQ2zZvp2Z587Z7MU9vrA43HMI6B8XR/OWLfl0wQIaNmzo8r1stTpdvnw5f/zxh+Wcs2fPkpubC0CvXr2Ijo4mOjqayy+/nCNHjti8bseOHWnUqBEAq1atsnTNu+qqq2jYsGE5oV65ciXz58+33KNGjRoAtG7dmn/+858MGzaMO++8kxtvvNHltdkjYPKovd28RRDcQaamV5wGDRqQvWYNY0eO5Jpp03g/P587bJy3CMiIjWXg4MGMGjuWyMiKy5DJZGL16tXlQi+A1eZlREQEFy/aHi7sShtTV2jWrBm//vorixYtYuTIkdx888288MILFbqmW++Q1jobyK7QHe3gjeYtkuoneEogpLGFApGRkYwdP56ut93GbbfcglFrSrfnzwd6K8XSr7+me/fuHt3DVqvT2267jX/961+WcVrr16+nXbt2dq9RtWpVq/amZbnxxhuZM2cOd955J9u3b2fv3r00b96cn376yXLOTTfdxKxZsxg5ciSLFy/m1KlTABw8eJCkpCQeeughEhMTyczM9GidpQkYjxoq3rxFUv2EYMbb6X7+xGAw0DohgdgyYhgLtEpIcCuboiy2Wp1OmzaNQYMG0aZNGy5evMhNN93E22+/bfcaNWvWtGpvWrodKsDjjz/OgAEDaN26NZGRkXz44Yfl0gpHjx7Ngw8+yNVXX80NN9xAgwYNANi4cSPPPPMMBoOBqKgor7Q8dSk9z106dOigzcMlKxOTycTVrduQNnh4uTltn/9rIps2/F7OUw+1DAkIvTUFynq8mbNcek3OWpQOSRpiN3OjsvOot2zZQosWLWweK90W9MmBA6n93ns8bzLxkVKMi41lZH4+/bVmnMHAsQEDmPbOO16zyxeUbXPqTWy9j0opz9Pzgomym5LmVD9XNycldCI4IhCnyjgSYbOI2+ul7atiGJPJxPzPPmO+yUS/2Fg21K7NxMmTGTV0KEuPHmVwfj73fvYZU996SxIGXCSkhBoqluonoRPBH/hqI9NfHyw///wzp41GSy/uX6ZPJy4ujh49evDPQYP485w5nDp7ll9++cXhsFjhEiEn1BVJ9fPViHtBcEQwbGSavfOFCxeSl5dX7nhERISlYvGrBQuIjo5m8iefWDlIcXFxvPXBB8y/6y4y/vIXvvz887AUak/CzSH5vcM8/djdVD9fjbgXAotAnmAeqJi98+gm0STWT6Re23rUb1ff8igqKrKc+7eMDDZs22b39y4tLY2N27bxt5I85XBCa82JEydsphE6IuQ8aqhYql8gVUlKzNw3BGKsOVjYlrQNTkLCceveK6eOnyIiIoKjx46iTcVOjq0Zg8qgaFC/geVnc/VgIHL+/Hm3BdUVYmJiqFevnluvCUmhhvKpfvZEr23btjzz7LMW0QukKkmJmYcngdwRrzCikE2XlRfgIa2GsGLFCnrc3sPjDJZAIzs7261+HL4kZIXaPKfNjD3Ra6lh+owZVqIXKFWSEjMPT8TjF8oSskJdFnuid37jT+VEz5PQiS/CFBVNNxS8i5SZC/4ibITanuidOnrE5kahu1WSvgpTuBMzN39YmMM5ZZGYtmNcmbASLF/bQT5YQomwEWqwLXpXom2KXtnQiTPq169PfHw8OZs3UrvUZsmRfXuJj0+gfn37zd0d4U7M3PxhMf3tdzhsirI8LzFt1/BkwkogEwxpf4JrhJVQ2xK98WNGeyWEsG/fPnJzc2l8dWsrbyy+WnV+++E79u3bx3XXXefRtV2NmZvDO9ExsfR55AnL8xLTFiqKeOf+JayEGsqLXmJioleue88995Cc3Mjmxl+jRo0rJJKuxszN5x05eoQ6WktM2w7OREcojyveeXZ2ts/tCFfCTqjLip63r/vci2OtYuBZ0yYyYWzFRdLVmHlaWhpvvfV2QOSBByr2RMdeTwzBdcTz9g0hLdT2MjG01tzRsycNGjSwWQ7rKbZi4FUUXhFJV2PmBoOBK6+8gjfHvOT3PPBgwVnecmUTzGIncXHfENK/vebNtUNFkRw2RVk9sr//nn37bE+W9hSzVz1n2kSLN+2P0vMaNWp4VEIfrjjLW65sTp88jdba7kPEMPwIaY/alYKRlStXevWepWPgrnjTjvKvjxw5gtaaOnXKTp8rxlG6XUWn5QiCEDgEnVC7U1jij4IRVzb+Sq9h+/btLF26jHsfG1wu/3re3LmYioq4f9BQt3OzKzotJxwJpQkrQmgRdELtbmGJP5oslRZJWx8spcW5akpL4quvsZstYjKZPCohdzcPXIBXcl6x+Xww9acQQpOgE2p3+1/4o8lSaZG09cFSVpyvaNCIOW9Otun1a62lhFwQwpygE2pPwhkVbbJUkT4e9j5YzhmNfPzaOK69qTvX39aTOdOn2PX6A6XtqiAI/iHohBrcD2d42p/aLNA7d+xk0ZLFNG1j3fKwftPmfL/gs3LhlrLC3rxpU94d/SxdevVBKejc4y42r/4BdbHAsob2XW+xCHfZDx1/t12VvtiC4F+CUqg9CWd4srlWOmzRd1ALThw5xN7tWwHY8ftvXCwsJD4+gR9/+omfVq+2CFbZcEfVJi3p0aRlsef/9jQMERFEmIp4bcIERr8ynmtv6m4Rbltev7/broZ6X+xgzlsWwoOgFGpwX7w82VwrG7ZYvXQRK+bP4d6/P8U1N3aznHfYZC1YjuLol9drwKYfV/LKmBfp06cPo8eMJfOlERbhTk9PL+f1l/1G8Ntvvzn0cLt17erWOt19H0qvJxR6iEheshDoBK1QV2Tclrv3MHvuHW/pweV16zsVrPz8fGIMirlvTrKKo8+c+BIXCgs4d/okP61ezeqff6ZpkxS+mvURc+fOpU+fPna9/tLfCBYsWODQw+1yww0+fR9kU1MQKpeAEWpP4qCVkStcNh5eHEt+yaFgLVmyhPWbNlG3Xn2rOPr5/Dxuf7A/SimOaNAmzbLlyxk0aBB9+vRx6PWXPubMw/VWoylH74NsagpC5eHUFVJKxSilflFK/a6U2qyUGuMLQ+yVex8qimT6jBns2bOnvPEl4uXrVLvSk8nXfPsNp44f49eV3wHw6/ffcvrYUX5avZpnnn2WZ559lvemTeNaoMkVdSyv+/i1cdzU+z7SBj5Jn0eeoM8jT9CwWQsaNWrMtGnT3FqDs2npvqDsPWUyuyBUHq541AVAd611rlIqClillFqstV7tTUPciYNWdhaCVTzcdJHc06eYObG4S96nr4+neYdOHNFV0CbNvLffIOriRX4Aum7axOUNk8l8aQSqqJDNP61EDxlm1xN3Z12OPFxvl8XbfB/EmxaESsOpO6SLyS35Mark4fUyLWdeYmnPzRPv2xu2LZn1EZMmTuDdd9/lzPFjZL40Aq01T06YZvGQa9WqxTUxMbQFWkdFkXbP3ZbXqYuFVp54WbFzZ13+8HBLvw/iTQtC5aFcKY1VSkUA64AmwHSt9TAb5wwEBgLUrl27/ezZsz0yaPPmP6hRuw5xVatyzmjk1NHDXN2ypcPzzDg63x65ubkkJCRYPXfu3DlOnjplfaLWnD9/npiYGJKSkjh27BjHjx+namINqsTEAnDmxDGiIiKodf48lwNHgdPx8URFRxMXF0d+fj5nzp6les3LyD19knp165aLJ7u7rs2b/6BKXBwX8s9Zjttakzc5ceIENWvWvGSfrferFEk1ahAXF+fx/Xy9Hn8gawp8Kns93bp1W6e17mDrmEubiVrrIqCdUioR+Fwp1UprvanMOe8C7wJ06NBBd/UwRez48eOMGjeOcbO/Zmx6L15+YSS2rlX6PHMowdH59sjOzi53/vz58xn46KN2syo+mTmTJk2a8OjDD5Og4cGoSDCZMBUVkRAVxYOFhdQATgEToqIoKLlGETDrwgXyDBFEV6/OgIz/s1z/yJEjbNu2jdOnTnP0xAn+dE9flAKtYdXXn/Ps0CF23wdz5ov5uK01+RJX3q+ePXt6fP3KXk9lIGsKfAJpPW5lfWitTyulVgA9gE3OzvcEV+OgvsxCcCVebjAYeH36dEYO/SebgVmF+dQBKCy0nF8DGF/y8yGgf1wcda68ks27d0PBeQ6boi4J22X1aFqrLnPfeoPrb+1B1RJPW2tN7pnTNG7c2O774O8ueaGeZy0I/saVrI/LSjxplFKxwK3AVp8Z5GIc1Jcx2t9++42mTVL4z+uvWsXLZ73+Kk1TGvPbb78B8Oijj3JZo0YcaJxCC6VYbOd6i4BrY2PpPHgwv27bRmZmpmW+ojkDxBzjrnHZ5Tw5fprVc7Xr1CEtLc3u++DrzBdnuLO/IAiC+7jyG3QFsEIptQFYAyzTWn/tS6PcmQ/oi0kme/bsYdny5Zw9fdpq8y/37BmWLl9u2dQzGAyMGzuG7X9sYvALL3CXUuSXuVY+0FspPv36a8a88gpVqlQhIyPDprBlTZuIQSmLl21O65s0cULAi53538LRZqkgCJ7hNPShtd4AXOPsPG/iznxAd6sTy6bAtW3blmeefdby8wPp6ZaJ4i1Su1vaj2a9OZmb7rqXLf9dYfVV3vyhUlBQQLOoKGIvXLC6XyyQEhHBhAkTWLxkieV5rTUnjx4uN18xMi7W6jlVVMi9997rdF3+xh/tZAUhXAj63yJ3Y7RlU+AKtbJKgZs5cyadb7iBoouFrJg/m+MHD/DsfT04cfgg382fzS3du5Xrw/Hwww/z9bx5pF+4gAbeB+pHRvE+xXmMD168yA/ffmuVdndEV6F5+07MnDjWKkwwbuwYi6c9+40JQeFNm/HVNxxBCHcCpoTcU9xttlS/fn2qVqtm2fgy7N5En0eeYF32cqpVq87JkydZ//sG7n98SLkMhs9mTCU6OrrcNU0mE7+tXcsooG9UFOsur8ODw0bz0vgXWXzsCE8XFjJZaxo0vYoO3W61vG7td0tZ/8OKcsJm3kyNNqig8KbNVEb/FUEIR4JeqO1V85nT3Zo1a2Y1HHb79u2cOnGCWa+/yrU3dQeKRfjT18dz6uQJ7rrrLuYvWEDO5o3Urt/g0vX27S1Jl9OsW7fOqvLx559/5rTRSN8qVTgfn8DrX60gJi6Odqld+cfNHVlzLo+iwkJmTX6Z9l1vsaQTzn97KgMHZDB58mQrYTOL3YQJExg2fLjVekpTem2B0hM6ELJQBCHUCHqXx141n6lWXdb//jt7TudZPZ/QuAURkVHk5+VZbXwV5J+jcUoT7rvvPm7u1o1fv/+W+GrVSaieSEL1RFJateG+x4Yw4+23y1U+frVgAdHR0UyZNYukK65g85qfANj8y4/UvPJKJn3yCdExMZw7daLcZtv48ePLCZtZ7Bo3bmxZm76sHs1Sb6ZZ6s007dKd3zdsZO+ZPJ9VY3pKIGShCEKoEfQetaMc3ujoGFJ73m0VbliXvZyaSUlog2LOm5O5buJEst6cjEHBuLFjMBgMzJ07l8SaNV3OC/5bRgaPP/kk9erVs5pxaN5Qu/fee+nUqRPz58/nrRlTrI5FRkZaQjdlvx1ora3CNKXtqF2/IU+On8ZvK7+TXGVBCHGC3u1xlMM7cEAGn789tdzzr0+ZTNW4OIynT3Hs0AHyzp6hWny8xautUqUKN3ftysevveRSXnCzZs04cuQIzzz7LKt//pnjh8wbkIcsXfWOHDnCE0884XCzrey3gyO6Cs07dGJWmXzurDcn03fQUJRSkqssCGFA0HvUYL9Kcfz48Sxs267c8/feey9KKQY//QxnT56w8qbNzJs3j8SaNV2ufCw9rqrHXwZYnj9s0sx76w22b99Os2bNrAYFlBVXW98OTCYTT9zexcqOvLNnuP7WOyRXWRDChJBww+xVKUZGRtqtXkxLS6NqXByx8QlW3rQZs1f90YSxLlXZlRbZstWGCYmJVE1pyaGiSKtBAc7WAaCUIkIp5kybWK4oRrxpQQgPQuY33F4Or73nzVWF+Xm55bxpM/PmzaMg96xLecH2QjBZb07mb8PHkDbwSZcGBdiq8KuWEE+kNpH50giqKKgaFyu5yoIQTmitvf5o37699gefffaZBvTcuXNder6oqEjPnTtXFxUVuX1NWxQVFemrWl6tR7zzsZ639aAe8fZM3aBZC/3ZH/v13C0HdPM27Vy6zmeffaavanuN1WtK2+HMphUrVji9RzARauvRWtYUDFT2eoC12o6mhpRQFxUV6ffff7+c8Np7Xmvn/xiOXmuL0iJbP6WZTnv0KYtot7i6lUvXMQt+jz/3t7ymtB3ObJJfmMBH1hT4BJJQh0zoA+zn8FYkt9fd15YOtVjGb7nZSc5WB8HSdkiusiCEFyGR9RFIlC6jnjNnDi+8OMajeHKwVfhV9hxLQQgnRKh9gFlkzWmAnvS+cLeHib8pnZ5oa8pL506dRKgFwUNEqH1AaZENNs/YU2TKiyD4Dgly+phwiSfLlBdB8B3y2yN4DZnyIgi+QYRa8Bq+nGMpCOGMxKhLkKwF7+DqFHlBEFxHXJ0S7PW1DrR+z4GOq1PkBUFwnbD3qM+dO8czzz7rsPezZC24R7hkughCZRH27s6FCxeYPmMGh01Rtns/T5sonqGbhEumiyBUFmH/m5SYmGjJ/31qwr8wFZmsshaqKMQzFATBr4R96AOKh8max2f1HTSUOW9O5tqbupM1bSITxpb3pmXjURCEyiTsPWqwzv+9/raeGE+fsvR+tuVNy8ajIAiViXjUXMpUMHvVEUqxxM64LJByaUEQKhfxqEso3Z60WkI8mZmZdmPTUi4tCEJl4lRRlFL1lVIrlFJ/KKU2K6UGV4ZhlU3p/N9xY8eQkZHhUHClXFoQhMrCFdfvIvBPrXVLoBMwSCnV0rdm+Qd38n+lXFoQhMrCqaporQ9prX8t+bsR2ALU9bVh/qAi01zEmxYEwVcoc4zVpZOVSgZWAq201mfLHBsIDASoXbt2+9mzZ3vRTN+Rm5tLQkKCx68/deoUOTk5pKSkkJiY6D3DKoCjNZ07d46Tp07ZfW1SjRrExcX5yjSPqOi/USAiawp8Kns93bp1W6e17mDrmMtCrZRKAL4HXtZaz3d0bocOHfTatWvdNtQfZGdn07VrV49fbzKZ+Oijj+jfv3/AhD0crWn+/Pk89Ne/2p3E8snMmcXfFAKIiv4bBSKBviaj0UhWVhY5u3bQOKUp6enpVK1a1eFrAn1N7lLZ61FK2RVql9LzlFJRwDzgU2ciHW4E28gsSS0UnInwqlWrSLu7J6nNTLSvn8ei7HhGDBvK/C8WkZqa6kfLwxdXsj4U8B6wRWs9xfcmCb5EUgvDm1WrVpGSXJdF7w0hftdEFr03hJTkuqxatQooFvG0u3vy6UAj85/M4/l7YP6TeXw60MhdPW/l0KFD/l1AmOLKb2UX4C9Ad6XU+pJHTx/bJfgQSS0MTxyJcNrdPcnNzSUrK4vUZiZubW392ltbQ+fG52nWtJFF1IXKw5Wsj1Vaa6W1bqO1blfyWFQZxgm+QVILwxNHIpzazGQJh7Svn2fz9Tc0hbvaFFhEvTRGo5Hjx48z4rlhZGZmYjQafbWMsER+M8MUSS0MPxyJ8LX18sjZtZPGKU1Zty/e5jm/7oabW10SdTPmcMqZ4/tshlOEiiNCHabIJJbww6EI74+ncUoT0tPTWbXdwLKN1seXbYRV2yG90yVRB+twSsrlJpvhFKHiyG9nGCOTWMILRyL87cZC8vPzAZj/xSL6To+h50QY9zmkvQ79ZsD8IZAQc0nUwbVwilBxRKjDGJnEEl5UrVqV+V8sot+7VUn7VzzjPofbx0PaVOjb8QLffTqclOTiouM/tuXww85o/jgAva6BnNchtbnZszaQnp4OuBZOCUYCLeYuv6GCEEakpqaSs+cgNz80gfELo7i6HhyaDv8eYB2yqFq1KouXLGf5tqos3BjP1MWQ9q94+r1bLPbmij1XwinBRiDG3EWoBSHMSEhIIDo6mtvaVmHKQ8XhDDOlQxZmUe814A3ymw6n14A3yNlz0KroxXFM+5LnHSwEasxdBgcIQhjiasgiISGBjIwMu9cxh1PS7u7Jqw0NrPq22JNetd1g5XmDZ2XplU3pmHt2qefNH2AfffQR0dHRlb4GEWo/I/MXBX/QOKUpi7LjgfJi/ev+eHr1cD1kYfa8lyxZQk7T4fTq0YSZ6elWIh0sZenOPsCGPfMPbmtbpdLXIELtZ8zzF+01SercqZMIteB10tPTGTFsKMs2YpWxYQ5ZzHQzZJGQkECtWrV4+ZVXyx0rHU64dK88lm2EtLt7krPnYMB03XP0AfbDNhjYtZApDxWWPFN5axCh9jPSJEnwB6VDFqnNTFxbL89uyKKiuJLC5yi8UpmU/gCLuu7S88s2wo87YN4Q6/Mraw0i1H6m7GBdpZSlrPtlKUQRvEzZOPHvm7axaNEicnbttBmy8AbBlMJnL+b+7cZCHuh8wWrj1UxlrEFUIACQJklCZWCrc17bVs1p3rw5L7/yKhkZGT75+h5sKXzmmHv1WvUt2S4vj5/MiXz/rUE86gCgrFct3rTgbfwZJ/Z2PLwyKBtzNxqNjB09wm9rEKEOENLS0hg1+kVpkiT4BH/Gid2JhwdqCp+zNWityczM9Jnd4rIFCNIkSfAl/o4Tu1I842yoQWVhNBrJzMzkwIEDVuXj9tYA+Nxu8agDCGmSJFQER96ot/KmK+LxOiqecRSauavnrWQ88neuanG1zz3s0vnefR8Zw6L3RlvlSpddQ2WFlMRtCyCkSZLgKc68UW+UevvS43U2WWbXyqk+97DLTsCpk+i8fLyyugeKRy0IQY4rXl1F86ZduUdFcDZZJr8QXu7r281PT+L4lRVSEqEWhCDHkcBcn1LEoEGDqHtlHad5047CGq6IWEpKSjnbXA2VOAzN7C5utVr2fhkZGV7dfPREdL1Ziu8I+Y4tCEGOPYFZtQ1+2HSOE5v+4zRv2llYwxMRcydU4spkmbL383YoxpN878rqHigetSAEOba8OmN+8UCAzwbDra1t96bQWpOVlcXWLZt55+23+OTRAu7ugM1z3fUc3d1ksxWa+XEHrP3fpckype93c9d6Xt/E8yTfu7JK8cWjFoQgx5ZXl7UaOjfBbqhi3LhxFm+0xr6p3Ni0gEfeK/bCy56blZXltufoySZb6fS3Mw2H8sPOaDIHFE+WKXs/rbXXN/HKTsA5dNr2sARHdttLPawo4lELQhBhLyZb1qv75KdI/nLDRZvXuLp2HtPefJ25T14o5zmmTS0eu2X2YM1hBnc9R0832Uqnv919T5/i+/1Y/n6LFn7lk008s+hmZWWho2PoNeANl/qfOOvbXVFEqAUhSHDW09ksMDm7dnJ93EHWbp+HrVDFwo1VuKmFsuONFnvjGV2Lnysd1ih7D0dNnCqyyVb6w+iFMa+glOLggf1W99u6davPNvHMopudnU3Xrl09vo43EaEWhCDA1Ziv2aszGo2kJH9uM966/ZDm3vYXbN7n2mTIOXrp3LKxWVc8x7y8PP7zySds2Kbc7o1R9sPou+xLXnRqaqqlanDrls0s23CRL9Ziiasb82H0PFj6+wW65+djNBoDovzcG4hQC0IQ4Czma2tElL1QxaAnH2PdyunY8kZ/3AHRkcWxWU83xJYsWcJ333/PuHHj6DdlgsubbM4+jD75z1weevA+i4h3vzqGB6dDhyYxNL/8PLNXF+dcP3dnId99Opyxo0cE3AQZTxGhFoQgwFHMt2ZMHiOGDeXm1lHlQiK2QhVaa1KS37Lp7f6UE8OAgY9zVYuWHvemnjdzJtcCf6xZ43KoBJzng6ffdzdzBp0vdfw8yzbC/W9qft8TxfwhhQE/QcZTnAq1Uup94E7gqNa6le9NEgShLPZivsZ8mL0a5g+5wK2tzeEMa5GyFaqw521/tahiHmhBQQGLly0jG+i6dClRUVEub7I5+jCKMJ2jS9MomyLe+HJN3SRDUEyQ8RRX0vM+BHr42A5BEBxgLz1u9Lzir/vupqn5KqVs2bJltImKoi3QOiqK5cuXu/xaRwUnWw9H0jmlEGM+ZK6AEVnFfxrzoVqVC3RqVGDzdYE2QcZTnHrUWuuVSqnkSrBFEAQ72EuPW/r7BZ67s9Dma66tl8f77/0brbXN0uqym4+zZ892uRR7165dfPnll1bP1a1blxlTp3Lv2bMA3Hv2LJNeeYXt27eXe33v3r3LlZw7Kjg5cCqCbzZH8sY350ltBu0bwaL1MGIOJMZHsvp/EUB5sfZmGbc/UVpr5ycVC/XXjkIfSqmBwECA2rVrt589e7a3bPQpubm5QR+/KkuorSnU1gOer8lkMnHy5EkuFBRQJToarTVnT+wn5XJTuXN3HgalAGUgtwBSUpravGdubi67du0gIRriq5jIu3Dp/Li4OE6ePElBQQHR0dEkJSVhMBjIy8tjx/btKJOJJKVQQFzduuQfOEAdrYkAioDDSmFWGA2c1BptMNC0WTPi48t7z6Vtiati4lyJLQ0bNuJ/ObtoUhuqxl4635gPO45AhMFA48tM5Y7lHDfQunVbjzpSVvb/u27duq3TWneweVBr7fQBJAObXDlXa0379u11sLBixQp/m+B1Qm1NobYerb23prNnz+rLkqrqpcPR+tNLj6XD0ZdVQxvfK/VzUlVtNBpdfn1i1Vh9WVKC7tMpXo+7H92nU7y+LKmq/uGHH7TWWu/evVt3addO3xoXpw+BXjFpktZg83EQ9K1xcbpLu3Z69+7dDtdkNBp1ZmamHvHccJ2ZmamNRqP+97//rXtfF2Nlo/nR+7oYPWzYMH1ZUlXdp1O8fum+8rZ6QmX/vwPWajuaKlkfghDEuNojw97Gmr1Mi05N4GJhPnMGYTeTomHDhmSvWcPYkSO5Zto03rFj4yIgIzaWgYMHM2rsWCIjHcuOrVztnF076Jh83ub51zU8T75BuZVhEmyIUAtCkFO6YvD99/7N5VE/W5WBm7G1sZazawet6uSRuaK40KXx5cWd6rJWw5+ucrxJmZGRQWRkJGPHj6frbbfx22+/kQ+Uij6QD/RWiqVff0337t1t2u9Kq1JXKh19XcbtT5wGbpRS/wF+AporpfYrpULznRCEIMYsUg//3wBUZHw5kQbbrTqLTPD6kuKNufjo4j9ThsLKLdC5qe17XVsvj61b/rB6zmAwEGcwWIk0FIt2q4QEIiIibF6rdKvSyK0TmfHqIK6oXZNhw4ZZZhVC8Ubj91u0zaZQ32/RXmsnGqg4FWqt9YNa6yu01lFa63pa6/cqwzBBENzHnS53RqORDzJnMH8IzP8HPH9P8Z+fPg7z1sDKrbbv8eMOePvt6VZ9n+fNmkWiyYQGPlSKJnFxfFiykXhvXh7zZs0qd53SlYhDb8vj7e8gOak4i2X94omkJF9pdQ+TSfPAvyDtdRj3efGfD/yr+PlQR9qcCkIIUbZV57jP7bfqLI5Pa5vhjU5NYHVOFZuCv/Z/8OmjBZY5giaTifmffUY1oF9sLJMaNmTixx/zWoMG9IuN5baS4yaTdWaKOT7eqUlx175PH7/0gfHNcPh0YK7lHllZWXS72sCeacXTXvILi//cMw26XW3w2mzCQEVi1IIQYrja5c5RJWC3llD32vvpO30enRuf54amxSOxVm0v3qRMbQ6pPxbHqlu2bMlpo5H/GQxUT0/nl+nTiYuLo0ePHvxz0CD+PGcOp86e5ZdffqFTp07l7p+1urhrn6N4uPnchJhLnf3MhEpRiyPEoxaEIMfcUW7Ec8PIzMzk4MGDzJ49m107t9OocQp9+/a124rU0eipP3XtRsYjfyc66pIHm/P6pUb+ZoH8asECoqOjqdeoEW998AFxcXEAxMXF8dYHH/Daxx9TJTqaLz//3Ob9c44WF7DYwnwPT8ZkhRIi1IIQxJSdG/jVu0/SpFFdZr7+ZAXnFBbHs69qcTUqMp6X+xZ7smVHYjVOacLfMjLYsG0biYmJNm1MS0tj47Zt/K1MRob5/ucLYd3/bK/PfI/Kmk0YqEjoQxCCFNttQYs7yvWbcZ5F/4SEGPfmFJZtRerKHEHzNXfutB9+qFevXrnnzPe/p/cdFOTnOr1HZcwmDFREqAUhSHHco/rSpBZHXeScxbN9Pbw1NTWV3XsPMW7cOO771+vc1EJxfXKBzXu4M2Em1BChFoQgxeFcwuRLk1qg/IabK0UmZpwJpPlasbGxZGZmOm3oVJaEhATGjx/PyJEjnd7DbO/w50aEzPQWV5AYtSAEKQ432HYXVxlafi614VY2ru0ojg2XOuvZ2pwsfa2IgsNOr+UIc9HOy6+8SkZGhs17uGJvKCIetSAEKY7jxzDzsdI/F8d6XZ29aMbRQN22bdtaXSs7BuY/6d3JKu7aG6qIUAtCkGIrfrxmTwzLfj9PhyYxTF18vlysNzMz0yqubcwvjmXnHIV6iQV89NFHDBo0qPiYE5F8YcwrDuc4emOyirNZkaEwvcUVRKgFIYgpGz/u3aMJ7/TqxcKFC23GekvHtVdtK64INDfiv7LaBUYMG0rbtm1JTU11KpKLFy/kBnsxci8VoTiMw4dBoYsZEWpBCHJsdY2z52Wau9AZ8/MsZdvWYZMLlpCCM5H8KU+VxMjtd7SrKK50zQsHZDNREMIIc+HI6HnOy7adVQP27NXL50Uo4V7oYkY8akEII8xx7R63dXc4azFn106GPzfCcbFL//6WDcXUZibufwTS/u3dIhRX8rjdSTUMVkSoBSHMSE1NZfzEKXzz0dM4GgjrikiWjpHr6Bh6DXjDaRGK0Wjko48+YtGir1HAHT3vpH///h7lcTvKSqnoRPVAQoRaEMKQ/v37M3b0CJZtLLBbtg2uVQMmJCTQt29fvvnmGzZt2sDs2bPterWrVq3irp63cbEwnz9dVTyc4Kt3v2H0yGF88fU3dsXVVhw+nFL3RKgFIQxxpzTc2Ygrs1f76stjigtS7Hi1RqORe3rfgcGUz/whl8IpzwPLNp4j7e47yNlzyGVxDafUPRFqQQhTvNE7o7RXG3W5iYx7wJ5Xm5WVRYMaF0hOsr2JeX3jQrfENZxS90SoBSGMqehA2NJebXap5215tTm7dlCtygW7vaevTy5wS1zDKXVP0vMEQXBK2eEE5sGz7ni1jVOacvZCFbu9p3/eHe3WAIBwSt0ToRYEwSGOmiK5M3klPT2dvaeq8P0WbIrrzzlRbomrO/Mhgx0JfQiCYBdnmRW/b9pmybWOuu7S68pmj0CxsC74cjF39byNtKnFWR+dmsAP22Dt3ji++Hqx2+IaLj2qRagFIcSpSEGIs8yKRYsWWbJHXm1oYNW3OBwskJqayr6DR0vyqBey+hz0frQX8/r391hcKxpnDwYk9CEIIUxFezm7EoM2e7XVa9Unv+lweg14g5w9Bx3mRA8aNIiFCxfx9cJFDBo0yCLSBw8epH///nS54Xr69+/PwYMHPVt4iCEetSCEKN4oCHE1syIhIYFatWrx8iuvemzvjBkzePofg+jaAno2g//+/gtNGs1k0uvTefzxxz2+biggHrUghCiuFIQ4o7IyKw4ePMjT/xjEF0Nh0bPw/D3Ff34xFJ7+xyAOHz7slfsEK+JRC0KI4o2CEF8PtzXz3HPP0bWF7UKYri1g+PDhfPjhh165VzDikketlOqhlNqmlNqplBrua6MEQag47qTOOcIcg+414A2XYtCesHPHVro0s33shqawc8c2r90rGHHqUSulIoDpwK3AfmCNUupLrfUfvjZOEATPcTxT0Tp1zhm+zqxo0vQq/vv7LzaP/bgDmrRr7rN7BwOuhD46Aju11jkASqnZwN2ACLUgBDCVFbbwBq+++ipNGs20+aGSvQVyloz3n3EBgNJaOz5BqfuAHlrrASU//wW4Xmv9RJnzBgIDAWrXrt1+9uzZvrHYy+Tm5gbUf1hvEGprCrX1QOWuyWQycfLkSS4UFFAlOpqkpCQMBu/nEVR0TceOHWP/vr1UjYH4GMg7D8bzUK9+Ay677DIvWuoalf3/rlu3buu01h1sHfPaZqLW+l3gXYAOHTrorl27euvSPiU7O5tgsdVVQm1NobYekDXZ4/DhwwwfPpydO7bRpGlzxo8fT506dbxjoJsE0r+RK0J9AKhf6ud6Jc8JgiB4lTp16oR1doc9XPn+swZoqpRqpJSqAjwAfOlbswRBEAQzTj1qrfVFpdQTwDdABPC+1nqzzy0TBKFSCYchscGKSzsKWutFWutmWusUrfXLvjZKEITKpaI9QQTfIpWJghDmhNOQ2GBFen0IQpjjjZ4ggm8RoRaEMCechsQGKyLUghDmeKsniOA7RKgFIcwJpyGxwYpsJgpCmBNMPUHCFRFqQRDCZkhssCJCLQgCEB5DYoMViVELgiAEOCLUgiAIAY4ItSAIQoAjQi0IghDgOJ3w4tFFlToG7PH6hX1DLeC4v43wMqG2plBbD8iagoHKXk9DrbXNUTY+EepgQim11t74m2Al1NYUausBWVMwEEjrkdCHIAhCgCNCLQiCEOCIUJcM5A0xQm1NobYekDUFAwGznrCPUQuCIAQ64lELgiAEOCLUgiAIAY4INaCUek0ptVUptUEp9blSKtHfNlUUpdT9SqnNSimTUiogUow8QSnVQym1TSm1Uyk13N/2VBSl1PtKqaNKqU3+tsUbKKXqK6VWKKX+KPn/NtjfNlUUpVSMUuoXpdTvJWsa42+bRKiLWQa00lq3AbYDz/nZHm+wCUgDVvrbEE9RSkUA04E7gJbAg0qplv61qsJ8CPTwtxFe5CLwT611S6ATMCgE/o0KgO5a67ZAO6CHUqqTPw0SoQa01ku11hdLflwN1POnPd5Aa71Fa73N33ZUkI7ATq11jtb6AjAbuNvPNlUIrfVK4KS/7fAWWutDWutfS/5uBLYAdf1rVcXQxeSW/BhV8vBr1oUIdXn+D1jsbyMEoPgXfl+pn/cT5CIQyiilkoFrgJ/9bEqFUUpFKKXWA0eBZVprv64pbAYHKKWWA3VsHHpea/1FyTnPU/xV7tPKtM1TXFmTIFQGSqkEYB4wRGt91t/2VBStdRHQrmS/6nOlVCuttd/2FcJGqLXWtzg6rpT6G3AncLMOkuRyZ2sKAQ4A9Uv9XK/kOSGAUEpFUSzSn2qt5/vbHm+itT6tlFpB8b6C34RaQh8UZxYAzwK9tdbn/G2PYGEN0FQp1UgpVQV4APjSzzYJpVBKKeA9YIvWeoq/7fEGSqnLzJlfSqlY4FZgqz9tEqEu5k2gKrBMKbVeKfW2vw2qKEqpPkqp/UBnYKFS6ht/2+QuJRu8TwDfULxJNUdrvdm/VlUMpdR/gJ+A5kqp/UqpYB9S2AX4C9C95HdnvVKqp7+NqiBXACuUUhsodhaWaa2/9qdBUkIuCIIQ4IhHLQiCEOCIUAuCIAQ4ItSCIAgBjgi1IAhCgCNCLQiCEOCIUAuCIAQ4ItSCIAgBzv8DkNBD2DGpBCkAAAAASUVORK5CYII=",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 画出预测的三个簇类\n",
    "plt.scatter(\n",
    "    X[y_pred == 0, 0], X[y_pred == 0, 1],\n",
    "    s=50, c='lightgreen',\n",
    "    marker='s', edgecolor='black',\n",
    "    label='cluster 1'\n",
    ")\n",
    "\n",
    "plt.scatter(\n",
    "    X[y_pred == 1, 0], X[y_pred == 1, 1],\n",
    "    s=50, c='orange',\n",
    "    marker='o', edgecolor='black',\n",
    "    label='cluster 2'\n",
    ")\n",
    "\n",
    "plt.scatter(\n",
    "    X[y_pred == 2, 0], X[y_pred == 2, 1],\n",
    "    s=50, c='lightblue',\n",
    "    marker='v', edgecolor='black',\n",
    "    label='cluster 3'\n",
    ")\n",
    "\n",
    "# 画出聚类中心\n",
    "plt.scatter(\n",
    "    model.cluster_centers_[:, 0], model.cluster_centers_[:, 1],\n",
    "    s=250, marker='*',\n",
    "    c='red', edgecolor='black',\n",
    "    label='centroids'\n",
    ")\n",
    "plt.legend(scatterpoints=1)\n",
    "plt.grid()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYUAAAEGCAYAAACKB4k+AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/MnkTPAAAACXBIWXMAAAsTAAALEwEAmpwYAAAn+ElEQVR4nO3de3xcdZ3/8dcn9zS9pJd0KCnQAqVNgKXFiLAgckkF1Aftou6KrvDbdbersgi76gqK633FRfHyeyiPH5fV4rqyiuUioNCWqxeQlGJbmt4ohTb0Etqm19zz+f1xvkmnIW0mIZMzk3k/H495zDnfOefMZ0KZ95zvOed7zN0REREByIu7ABERyRwKBRER6aFQEBGRHgoFERHpoVAQEZEeBXEX8FZMmjTJp02bFncZIiJZZdmyZW+4e0Vfr2V1KEybNo26urq4yxARySpm9uqRXlP3kYiI9FAoiIhID4WCiIj0UCiIiEgPhYKIiPTI6rOPBuP+5Q3c8uhaXm9q5tjyUj57yUzmz6mMuywRkYyQU6Fw//IGbly0kub2TgAampq5cdFKAAWDiAg51n10y6NrewKhW3N7J7c8ujamikREMktOhcLrTc0DahcRyTVpCwUzm2lmLyY99prZ9WY2wcwWm9n68Dw+LG9m9gMz22BmK8zszKGu6djy0gG1i4jkmrSFgruvdffZ7j4beBtwELgPuAFY6u4zgKVhHuAyYEZ4LABuG+qaPnvJTEoL8w9rKy3M57OXzBzqtxIRyUrD1X10MfCyu78KzAMWhvaFwPwwPQ+42yPPAuVmNmUoi5g/p5JvXnE6lUl7Bl947ywdZBYRCYYrFD4E/DxMJ9x9a5jeBiTCdCWwOWmdLaHtMGa2wMzqzKyusbFxwIXMn1PJ72+4iIeuPQ+A4oL8ftYQEckdaQ8FMysCLgd+2fs1d3fAB7I9d7/d3Wvcvaaios+RX1Ny6rFjOWZsCUvqtw96GyIiI81w7ClcBrzg7t3fvtu7u4XC847Q3gAcl7Te1NCWFmZGbfVknl73Bi29TlMVEclVwxEKV3Ko6wjgQeDqMH018EBS+1XhLKSzgT1J3UxpUVuVoLm9kz++vDOdbyMikjXSGgpmVgbMBRYlNd8MzDWz9UBtmAd4BNgIbADuAD6ZztoAzjlpImVF+SxWF5KICJDmYS7c/QAwsVfbTqKzkXov68A16aynt+KCfM4/pYKl9dvpmncaeXk2nG8vIpJxcuqK5r7UViXYvreVVa/vibsUEZHY5XwoXDhrMnkGS1arC0lEJOdDYUJZETUnTOAxhYKIiEIBoLZ6Mmu27WPzroNxlyIiEiuFAjC3+hgAluosJBHJcQoFYPqkMk6qKGNJ/Y7+FxYRGcEUCkFtdYJnN+5kb0t73KWIiMRGoRDMrUrQ0eU8tXbgg+yJiIwUCoVgzvHjmVBWpAHyRCSnKRSC/DzjolmTeWLNDto7u+IuR0QkFgqFJLVVCfa2dPD8pl1xlyIiEguFQpJ3zphEUUEeS1brLCQRyU0KhSRlxQWce9JEFtdvIxqfT0QktygUeqmtTrB5VzPrd+yPuxQRkWGnUOjl4lnRLaMXaywkEclBCoVejhlXwl9MHadQEJGcpFDow9yqBC9ubmLHvpa4SxERGVYKhT7UVkddSI9rLCQRyTEKhT7MOmYMleWlurpZRHKOQqEPZsbc6gTPrH+D5rbOuMsRERk2aQ0FMys3s3vNbI2Z1ZvZOWY2wcwWm9n68Dw+LGtm9gMz22BmK8zszHTW1p/aqgStHV38bsMbcZYhIjKs0r2n8H3gt+4+CzgDqAduAJa6+wxgaZgHuAyYER4LgNvSXNtRnTV9AmOKC3TvZhHJKWkLBTMbB5wP3AXg7m3u3gTMAxaGxRYC88P0POBujzwLlJvZlHTV15+igjzeNbOCpWu209Wlq5tFJDekc09hOtAI/NjMlpvZnWZWBiTcfWtYZhuQCNOVwOak9beEtsOY2QIzqzOzusbG9N77YG51gjf2t/Hilqa0vo+ISKZIZygUAGcCt7n7HOAAh7qKAPBogKEB/Qx399vdvcbdayoqKoas2L5ccMpk8vNMXUgikjPSGQpbgC3u/lyYv5coJLZ3dwuF5+6LARqA45LWnxraYjNuVCFnTZugU1NFJGekLRTcfRuw2cxmhqaLgdXAg8DVoe1q4IEw/SBwVTgL6WxgT1I3U2xqqxOs276fV3ceiLsUEZG0S/fZR9cCPzOzFcBs4D+Am4G5ZrYeqA3zAI8AG4ENwB3AJ9NcW0rmVmmAPBHJHQXp3Li7vwjU9PHSxX0s68A16axnMI6fOIqZiTEsqd/OP7zzxLjLERFJK13RnILa6sk8v2k3TQfb4i5FRCStFAopqK1K0NnlPLk2vafAiojETaGQgjOmljNpdDGLdRaSiIxwCoUU5OUZtVWTeWptI20dXXGXIyKSNgqFFNVWJdjf2sFzr+yMuxQRkbRRKKTo3JMnUVKYp6ubRWREUyikqLQon/NOrmBJ/Q6is2dFREYehcIAzK2eTENTM/Vb98VdiohIWigUBuCiWQnM0FhIIjJiKRQGoGJMMbOPK1coiMiIpVAYoNqqBCu27GHbnpa4SxERGXIKhQF6d3U0QJ72FkRkJFIoDNDJk0dzwsRRCgURGZEUCgNkZtRWJfjDhp0caO2IuxwRkSGlUBiE2qoEbZ1dPLNeA+SJyMiiUBiEmmnjGVdayOLVO/pfWEQkiygUBqEwP48LZ1bw+JrtdHbp6mYRGTkUCoNUW51g98F2Xnhtd9yliIgMGYXCIJ1/SgWF+aYB8kRkRFEoDNLYkkLOPnGibrwjIiNKWkPBzDaZ2Uoze9HM6kLbBDNbbGbrw/P40G5m9gMz22BmK8zszHTWNhRqqxJsbDzAy4374y5FRGRIDMeewoXuPtvda8L8DcBSd58BLA3zAJcBM8JjAXDbMNT2llxcNRmApdpbEJERIo7uo3nAwjC9EJif1H63R54Fys1sSgz1pWzq+FFUTxnLEp2aKiIjRLpDwYHHzGyZmS0IbQl33xqmtwGJMF0JbE5ad0toO4yZLTCzOjOra2yM/+Kx2uoEda/uYteBtrhLERF5y9IdCue5+5lEXUPXmNn5yS96dAuzAZ3o7+63u3uNu9dUVFQMYamDM7cqQZfD42u0tyAi2S+toeDuDeF5B3AfcBawvbtbKDx3f5s2AMclrT41tGW00yrHkhhbrFNTRWRESFsomFmZmY3pngbeDawCHgSuDotdDTwQph8ErgpnIZ0N7EnqZspY3QPkPb2+kZb2zrjLERF5S9K5p5AAfmdmfwb+BDzs7r8Fbgbmmtl6oDbMAzwCbAQ2AHcAn0xjbUOqtjrBwbZO/rhxZ9yliIi8JQXp2rC7bwTO6KN9J3BxH+0OXJOuetLpnBMnMqoonyWrt3PhzMlxlyMiMmi6onkIlBTmc/6MCpbUbyfKNhGR7KRQGCK11Qm2721lVcPeuEsRERk0hcIQuXBmBXmGxkISkaymUBgiE0cX87YTxuvUVBHJagqFIVRblWD11r00NDXHXYqIyKAoFIbQ3OpoxA4NkCci2UqhMIROrBjNiRVlLFYXkohkKYXCEJtbleDZjTvZ29IedykiIgOmUBhitdUJ2judp9fFP4KriMhApRwKZpZvZsea2fHdj3QWlq3OPH4840cV6iwkEclKKQ1zYWbXAl8CtgNdodmBv0hTXVkrP8+4aFaCxau30d7ZRWG+dsZEJHuk+o11HTDT3U9199PDQ4FwBHOrJ7O3pYO6TbvjLkVEZEBSDYXNwJ50FjKSvHNGBUX5eSzRqakikmVSHSV1I/CkmT0MtHY3uvutaakqy5UVF/CXJ09kSf12bnpvFWYWd0kiIilJdU/hNWAxUASMSXrIEdRWJXh150E27NgfdykiIilLaU/B3b8CYGajw7y+6fpxcdVkbro/GiBvRkL5KSLZIaU9BTM7zcyWAy8BL5nZMjM7Nb2lZbcp40o5vXKcTk0VkaySavfR7cC/uvsJ7n4C8GmiW2bKUcytTrB8cxON+1r7X1hEJAOkGgpl7v5E94y7PwmUpaWiEaS2KoE7PLFmR9yliIikJNVQ2GhmXzSzaeFxE9EZSXIUVVPGUFleqhvviEjWSDUU/h6oABaFR0Vo61cYHmO5mT0U5qeb2XNmtsHM/tfMikJ7cZjfEF6fNuBPk2HMjNqqyTyzvpHmts64yxER6VdKoeDuu939U+5+Znhc5+6pXq57HVCfNP8t4LvufjKwG/hYaP8YsDu0fzcsl/VqqxO0tHfx+w1vxF2KiEi/jhoKZva98PxrM3uw96O/jZvZVOC9wJ1h3oCLgHvDIguB+WF6XpgnvH6xjYCrvt4xfSKjiwt0dbOIZIX+rlP4aXj+9iC3/z3g3zh0odtEoMndO8L8FqAyTFcSDaeBu3eY2Z6w/GE/sc1sAbAA4PjjM3+g1qKCPN41s4Il9Tvo6nLy8rI+50RkBDvqnoK7LwuTs939qeQHMPto65rZ+4AdSdsYEu5+u7vXuHtNRUXFUG46beZWJXhjfyt/3tIUdykiIkeV6oHmq/to+z/9rHMucLmZbQLuIeo2+j5QbmbdeyhTgYYw3QAcBxBeHwfsTLG+jHbBzAry80xdSCKS8fo7pnClmf0aOLHX8YQngF1HW9fdb3T3qe4+DfgQ8Li7fwR4AvhAWOxq4IEw/SCHwucDYXkf1KfKMOWjinj7tPEsWa3rFUQks/V3TOEPwFZgEvCdpPZ9wIpBvufngHvM7OvAcuCu0H4X8FMz20AUOB8a5PYzUm1Vgq8/XM9rOw9y/MRRcZcjItKno4aCu79qZluAlnAcYVDCFdBPhumNwFl9LNMCfHCw75Hp5lZHobCkfjt/f970uMsREelTv8cU3L0T6DKzccNQz4h1wsQyTkmM1nEFEcloqd5kZz+w0swWAwe6G939U2mpaoSqrUrw/57eyJ6D7YwbVRh3OSIib5Lq2UeLgC8CTwPLkh4yALXVCTq7nCfX6YCziGSmVG+yszCMUXRKaFrr7u3pK2tkmj21nEmji1i8ejvzZlf2v4KIyDBL9SY7FwDrgR8CPwLWmdn56StrZMrLMy6eleCptY20dXTFXY6IyJuk2n30HeDd7v4udz8fuIRo0DoZoNrqBPtaO/jTK0e9zENEJBaphkKhu6/tnnH3dYCOlA7CeSdPorggT2chiUhGSjUU6szsTjO7IDzuAOrSWdhIVVqUzztnTGLx6u2MkAu2RWQESTUUPgGsBj4VHquBj6erqJGutipBQ1Mza7bti7sUEZHDpBoKH3f3W939ivD4LlFQyCBcVDUZgCWr1YUkIpklnaOkyhFMHlPC7OPKdVxBRDLOUa9TMLMrgQ8D03vdaW0s/YySKkc3tzrBLY+uZfveFhJjS+IuR0QEiGeUVOFQKCyt38GH35H5d5ATkdzQ353XXg0jnNYCz4SRUrcS3RxH95V8C2ZMHs3xE0apC0lEMkqqxxSeBkrMrBJ4DPgo8JN0FZULzIzaqgS/2/AGB9s6+l9BRGQYpBoK5u4HgSuAH7n7B4FT01dWbqitnkxbRxfPrH8j7lJERIABhIKZnQN8BHg4tOWnp6Tc8fZpExhbUsBinZoqIhki1VC4HrgRuM/dXzKzE4nutSxvQWF+HhfOmszja3bQ2aWrm0UkfimFgrs/5e6Xu/u3wvxG3WBnaNRWJdh1oI3lr+2OuxQRkX6vU/ieu19vZr8G3vRT1t0vT1tlOeJdMysoyDMW12+nZtqEuMsRkRzX33UKPw3P3x7ohs2shOispeLwPve6+5fMbDpwDzCR6O5tH3X3NjMrBu4G3gbsBP7G3TcN9H2zzdiSQs4+cSJLVm/nxsuq4i5HRHJcf9cpLAvPTxENgrc6dCU9FdqOphW4yN3PAGYDl5rZ2cC3gO+6+8nAbuBjYfmPAbtD+3fDcjmhtmoyLzceYGPj/rhLEZEc1+8xBTP7spm9AawluuNao5n9e3/reaT7W64wPBy4CLg3tC8E5ofpeWGe8PrFZpYTF8jVVicAWFqvezeLSLyOGgpm9q/AucDb3X2Cu48H3gGca2b/0t/GzSzfzF4EdgCLgZeBJnfvvlprC9B9s+JKYDNAeH0PURdT720uMLM6M6trbGxM4SNmvqnjR1E1ZSyLdXWziMSsvz2FjwJXuvsr3Q3uvhH4W+Cq/jbu7p3uPptoWIyzgFmDL7Vnm7e7e42711RUVLzVzWWMuVWTqdu0i90H2uIuRURyWH+hUOjub7rc1t0bGcDtON29iei6hnOAcjPrPsA9FWgI0w3AcQDh9XFEB5xzQkG+0eUw52uLOffmx7l/eUP/K4mIDLH+QuFoP1uP+pPWzCrMrDxMlwJzgXqicPhAWOxq4IEw/SCH7tvwAeBxz5H7Vd6/vIHbnny5Z76hqZkbF61UMIjIsOvvlNQzzGxvH+0G9HcTgCnAQjPLJwqfX7j7Q2a2GrjHzL4OLAfuCsvfBfzUzDYQ3avhQ6l+iGx3y6NraW7vOqytub2TWx5dy/w5lUdYS0Rk6B01FNx90OMbufsKYE4f7RuJji/0bm8BPjjY98tmrzc1D6hdRCRdUh37SNLo2PLSAbWLiKSLQiEDfPaSmZQWHr5TZgafnntKTBWJSK5SKGSA+XMq+eYVp1NZXooB40cV4g4H2jvjLk1Eckx/B5plmMyfU9lzUNnd+ehdf+I/f7uGS6oTTB7b3zF9EZGhoT2FDGRmfG3+abR2dPHVh1bHXY6I5BCFQoaaPqmMay44mYdWbOWpdSNjOA8RyXwKhQz28QtO5MSKMr54/ypadHxBRIaBQiGDFRfk8435p/ParoP838fXx12OiOQAhUKGO+ekibz/zKnc/vRG1m3fF3c5IjLCKRSywBfeW0VZcQFfuG8lXV05MRyUiMREoZAFJpQV8fnLqnh+025+uWxz3OWIyAimUMgSH6yZylnTJvDN36xh5/7WuMsRkRFKoZAlzIxv/NVpHGjt4BuP1MddjoiMUAqFLDIjMYZ/Ov8kFr3QwB82vOneRyIib5lCIcv880Unc8LEUdx0/ypaO3TtgogMLYVClikpzOdr805j4xsHDrtbm4jIUFAoZKHzT6ng8jOO5UdPvMzGxv1xlyMiI4hCIUvd9L4qigvzuOn+VeTIraxFZBgoFLLU5DElfO7SWfzh5Z3ct7wh7nJEZIRQKGSxD591PHOOL+cbD9fTdLAt7nJEZARIWyiY2XFm9oSZrTazl8zsutA+wcwWm9n68Dw+tJuZ/cDMNpjZCjM7M121jRR5ecZ//NXpNDW3c/Nv1sRdjoiMAOncU+gAPu3u1cDZwDVmVg3cACx19xnA0jAPcBkwIzwWALelsbYRo2rKWP7hvOnc8/xmnt+0K+5yRCTLpS0U3H2ru78QpvcB9UAlMA9YGBZbCMwP0/OAuz3yLFBuZlPSVd9Icl3tDCrLS/n8opW0dXTFXY6IZLFhOaZgZtOAOcBzQMLdt4aXtgGJMF0JJI/2tiW09d7WAjOrM7O6xkbdkQxgVFEBX513Kut37OeOZzbGXY6IZLG0h4KZjQZ+BVzv7nuTX/PoXMoBnU/p7re7e42711RUVAxhpdnt4qoEl556DD9Yup7Xdh6MuxwRyVJpDQUzKyQKhJ+5+6LQvL27Wyg87wjtDcBxSatPDW2Soi9dXk1BnnHTA7p2QUQGJ51nHxlwF1Dv7rcmvfQgcHWYvhp4IKn9qnAW0tnAnqRuJknBlHGlfOaSmTy9rpGHVuhPJyIDl849hXOBjwIXmdmL4fEe4GZgrpmtB2rDPMAjwEZgA3AH8Mk01jZiXXXONE6vHMdXH1rNnub2uMsRkSxj2dzNUFNT43V1dXGXkXFWbtnDvB/+jo+84wS+Nv+0uMsRkQxjZsvcvaav13RF8wh0+tRxXHXONP77uVd5cXNT3OWISBZRKIxQn373KUweU8yNi1bS0alrF0QkNQqFEWpMSSFfufxU6rfu5ce/3xR3OSKSJRQKI9glpx7DxbMmc+vidTQ0NcddjohkAYXCCGZmfGXeqQB86YGXYq5GRLKBQmGEmzp+FNfXzmBJ/XYefWlb3OWISIZTKOSAvz9vOrOOGcOXHniJ/a0dcZcjIhlMoZADCvPz+MZfnc72fS3c+ti6uMsRkQymUMgRbzthPB8+63h+8odXWNWwJ+5yRCRDKRRyyL9dOosJZcV8/r6VdHZl75XsIpI+CoUcMq60kC++r4oVW/bw0z9uirscEclACoUcc/kZx/LOGZP49mPr2LanJe5yRCTDKBRyjJnx9fmn0d7ZxVcf0rULInI4hUIOOmFiGddedDKPrNzGE2t29L+CiOQMhUKOWnD+SZw8eTQ33b+Kg226dkFEIgqFHFVUkMc35p9GQ1Mz31+6Pu5yRCRDKBRy2DtOnMhf10zlrmdeYc22vXGXIyIZQKGQ4268rIqxpYV8ftFKunTtgkjOUyjkuPFlRXz+PVW88FoT9zy/Oe5yRCRmCgXh/WdWcvaJE7j5N/U07muNuxwRiVHaQsHM/svMdpjZqqS2CWa22MzWh+fxod3M7AdmtsHMVpjZmemqS94sunbhdJrbO/n6w6vjLkdEYpTOPYWfAJf2arsBWOruM4ClYR7gMmBGeCwAbktjXdKHkyeP5hMXnMwDL77OM+sb4y5HRGKStlBw96eBXb2a5wELw/RCYH5S+90eeRYoN7Mp6apN+vbJC05i+qQyvnj/KlraO+MuR0RiMNzHFBLuvjVMbwMSYboSSD7KuSW0vYmZLTCzOjOra2zUL9qhVFKYz9fmncamnQf50RMb4i5HRGIQ24Fmd3dgwOdAuvvt7l7j7jUVFRVpqCy3nTdjEvNnH8ttT73Mhh374i5HRIbZcIfC9u5uofDcPfBOA3Bc0nJTQ5vE4Avvraa0MJ8v3LeKKLtFJFcMdyg8CFwdpq8GHkhqvyqchXQ2sCepm0mGWcWYYm58TxXPvbKLe5dtibscERlG6Twl9efAH4GZZrbFzD4G3AzMNbP1QG2YB3gE2AhsAO4APpmuuiQ1f1NzHDUnjOc/Hqln14G2uMsRkWFi2dw9UFNT43V1dXGXMWKt3baPS7/3NKVF+TS3dXJseSmfvWQm8+f0eQ6AiGQJM1vm7jV9vVYw3MVI9qjfupf8PONgW3R6akNTMzcuWgmgYBAZoRQKckS3PLqWjl6D5DW3d/LlX79EWXEB40cVUj6qiPGjChlXWkhBvkZNEcl2CgU5otebmvtsbzrYzj/e/eZuuzElBYwPIVE+qojyUYWM7/XcHSLd86OLCzCzAdd2//IGbnl0La83NatbS2QIKRTkiI4tL6Whj2BIjC3mjqtq2H2wnaaDbew+0EZTcztNB9vZfbCN3eH5lTcOsPtgG/tajnxnt4I8OywsyvsIld7zz6xr5IsPvERzu7q1RIaaQkGO6LOXzOTGRSt7vnwBSgvzufGyKv5iannK22nv7GJPcxQgUXBEodEUAqSpO1wOtrF510FWbIna2zq6Un6P5vZObly0kuWv7WZMSSGjSwoYU1LAmJJCxpQUMDZMjy6O2suKCsjLG/geSn+0ByPZTqEgR9T9ZfZWv+QK8/OYNLqYSaOLB7Rec1tn2PNoY09SmNx0/6q+l2/v5P4XX2dfSzv93S/IDEYXFzA2KSiSQ+TQc3gUv7l9dHHBYcdR7l/ecFiIag9GspFCQY5q/pzK2L7QSovyKS0q5djy0sPab3vy5T67tSrLS/n9DRfh7hxs62R/awf7WtrZ29LBvpZoel9LB/tb+m5/Y3/U5bUvtLd19r+nMqoovycsXt15gPbONx+Y/9KDLwHRMZexpYWMLSlkbGkUSKOK8gd1TEUkXRQKknWO1K312UtmAtH9IcqKCygrLiAxtmTQ79PS3h0sh4KjO0z29wqUfa3tbNixv8/t7Glu5/r/fbHP1/LzLHRvHQqK5Okxye2lhYztDpbSaI9l9AC6wdS1JalQKEjWGapurf6UFOZTUpifcrfXuTc/3ucezDHjSvj5P57N3uZ29ra0s7e5O1yi6eg5Cpu9ze288saBnrYDbUcfwtwMxhS/eQ+kd5hs2LGPXy3bQlvYk2loauaGX62gpb2Tv645Li3HV1KlsMosuqJZZIj0PqYA0R7MN684fdBfch2dXexr6eg/THq17QsBs6/1yGd+dTODUYX5lBVHx0mivaz8pOnQXnR4++jiAkYVHb7e6OICSgrzUu4SS8ffTPqnK5pFhkE69mAK8vMYX1bE+LKiQa3f2eXsb+1g9lceO+I49ddeNIMDrR0caO1gf3g+0NrJ600tHGg71N7SntrZYPl5xqii3qGST1lRwZva7nhm42GBANFxmG88Us9pleMoKcyjuCCfksI8SgrzKcizYTsGk6t7MNpTEMkBR+ra6j44n4qOzi4OtHVyoLWDg20d7G/t7BUkfbQlLdc7dFI5kN9bnh3q1isuyOvzuXeQHGqPposL8yl50zqHr//k2h188zdrDgvCTNmDGYqwOtqegkJBJAdkYjdNW0cX77rlCbbuaXnTaxPKivjy5afS0t5Ja3snrR1dtLR30tIePffMd3TRGp77XLajk9bwPBRfdXkGU8aVUhyCp7ggrydoeqYL8sPrScv0s3x3kB22Xpguyj/UHTdU/x3VfSSS44br4PxAFBXk8blLZ/X5Jffv76vm8jOOHbL3cnfaOrt6AqO1d7i0d9HacSh0Pv3LP/e5nS6Hs0+cSGtHtG5rCKW9ze1hPtp28vRg9oh66w6Q/a0db7oGp7m9k1seXTtk/y0VCiI5Is5rTo5kuMLKzMIv9XzGlhT2u/yti9cdsbvtO399xoDeu6srBFIInu7AaEkOj47er3f17PUkB8xP/rCpz/c40jhlg6FQEJFYZWJY9XctzEDk5RkledFxC+g/kI5m8ertfYZV7ws83wqNdSwi0sv8OZV884rTqSwvxYj2EDLhIPNnL5lJaWH+YW2DDasj0Z6CiEgfMnEPZji62xQKIiJZJN1hpe4jERHpkVGhYGaXmtlaM9tgZjfEXY+ISK7JmFAws3zgh8BlQDVwpZlVx1uViEhuyZhQAM4CNrj7RndvA+4B5sVck4hITsmkUKgENifNbwlthzGzBWZWZ2Z1jY2Nw1aciEguyLqzj9z9duB2ADNrNLNXB7mpScAbQ1bY0FFdA6O6Bi5Ta1NdA/NW6jrhSC9kUig0AMclzU8NbUfk7hWDfTMzqzvSgFBxUl0Do7oGLlNrU10Dk666Mqn76HlghplNN7Mi4EPAgzHXJCKSUzJmT8HdO8zsn4FHgXzgv9z9pZjLEhHJKRkTCgDu/gjwyDC93e3D9D4DpboGRnUNXKbWproGJi11ZfVNdkREZGhl0jEFERGJmUJBRER65FwomNl/mdkOM1sVdy3JzOw4M3vCzFab2Utmdl3cNQGYWYmZ/cnM/hzq+krcNSUzs3wzW25mD8VdSzcz22RmK83sRTPLmJuIm1m5md1rZmvMrN7MzsmAmmaGv1P3Y6+ZXR93XQBm9i/h3/wqM/u5mZXEXROAmV0XanopHX+rnDumYGbnA/uBu939tLjr6WZmU4Ap7v6CmY0BlgHz3X11zHUZUObu+82sEPgdcJ27PxtnXd3M7F+BGmCsu78v7nogCgWgxt0z6oInM1sIPOPud4bTvke5e1PMZfUI4581AO9w98FelDpUtVQS/VuvdvdmM/sF8Ii7/yTmuk4jGgLoLKAN+C3wcXffMFTvkXN7Cu7+NLAr7jp6c/et7v5CmN4H1NPHMB/DzSP7w2xheGTELwkzmwq8F7gz7loynZmNA84H7gJw97ZMCoTgYuDluAMhSQFQamYFwCjg9ZjrAagCnnP3g+7eATwFXDGUb5BzoZANzGwaMAd4LuZSgJ4umheBHcBid8+IuoDvAf8GdMVcR28OPGZmy8xsQdzFBNOBRuDHobvtTjMri7uoXj4E/DzuIgDcvQH4NvAasBXY4+6PxVsVAKuAd5rZRDMbBbyHw0eCeMsUChnGzEYDvwKud/e9cdcD4O6d7j6baOiRs8IubKzM7H3ADndfFnctfTjP3c8kGgb+mtBlGbcC4EzgNnefAxwAMuaeJaE763Lgl3HXAmBm44lGaZ4OHAuUmdnfxlsVuHs98C3gMaKuoxeBzqF8D4VCBgl99r8Cfubui+Kup7fQ3fAEcGnMpQCcC1we+u/vAS4ys/+Ot6RI+JWJu+8A7iPq/43bFmBL0l7evUQhkSkuA15w9+1xFxLUAq+4e6O7twOLgL+MuSYA3P0ud3+bu58P7AbWDeX2FQoZIhzQvQuod/db466nm5lVmFl5mC4F5gJrYi0KcPcb3X2qu08j6nZ43N1j/yVnZmXhRAFC98y7iXb5Y+Xu24DNZjYzNF0MxHoSQy9XkiFdR8FrwNlmNir8v3kx0XG+2JnZ5PB8PNHxhP8Zyu1n1DAXw8HMfg5cAEwysy3Al9z9rnirAqJfvh8FVob+e4DPh6E/4jQFWBjODMkDfuHuGXP6ZwZKAPdF3yMUAP/j7r+Nt6Qe1wI/C101G4G/i7keoCc85wL/FHct3dz9OTO7F3gB6ACWkznDXfzKzCYC7cA1Q33CQM6dkioiIkem7iMREemhUBARkR4KBRER6aFQEBGRHgoFERHpoVCQjGZmbmbfSZr/jJl9eYi2/RMz+8BQbKuf9/lgGJX0iXTWZWbTzOzDA69Q5BCFgmS6VuAKM5sUdyHJwiBpqfoY8I/ufmG66gmmAQMKhQF+DskBCgXJdB1EFw39S+8Xev+iNrP94fkCM3vKzB4ws41mdrOZfSTcF2KlmZ2UtJlaM6szs3VhPKXuAQBvMbPnzWyFmf1T0nafMbMH6eNqYDO7Mmx/lZl9K7T9O3AecJeZ3dLHOp8L6/zZzG7u4/VN3YFoZjVm9mSYfpcdugfB8nAV9c1Eg6W9aNG9AFL6HOEq7IdDDavM7G9S+Q8jI5N+JUg2+CGwwsz+cwDrnEE0zPAuoqt373T3syy6edG1wPVhuWlEYxOdBDxhZicDVxGNivl2MysGfm9m3SNkngmc5u6vJL+ZmR1LNFDZ24jGo3nMzOa7+1fN7CLgM+5e12udy4gGXXuHux80swkD+HyfIbqa9fdhEMUWogHuPtN9XwmLRmjt93OY2fuB1939vWG9cQOoQ0YY7SlIxgujxd4NfGoAqz0f7lHRCrxMNKokwEqiIOj2C3fvcvf1ROExi2i8oqvCcCPPAROBGWH5P/UOhODtwJNhALUO4GdE9y84mlrgx+5+MHzOgdzn4/fArWb2KaA8vGdvqX6OlcBcM/uWmb3T3fcMoA4ZYRQKki2+R9Q3n3wPgA7Cv2EzywOKkl5rTZruSprv4vA95N7jvDhgwLXuPjs8pieNpX/grXyIQej5jEDP7SDd/WbgH4BSoj2AWX2sm9LncPd1RHsOK4Gvhy4vyVEKBckK4Vf0L4iCodsmou4aiMbiLxzEpj9oZnnhOMOJwFrgUeATFg1ljpmdYv3fkOZPwLvMbFIYPPBKortiHc1i4O8sulkKR+g+2sShz/j+7kYzO8ndV7r7t4DnifZw9gFjktZN6XOErq+D7v7fwC1k1pDaMsx0TEGyyXeAf06avwN4wMz+THTDkcH8in+N6At9LNG9blvM7E6iLqYXLBrutBGYf7SNuPtWM7uB6H4TBjzs7g/0s85vzWw2UGdmbcAjwOd7LfYVooPUXwOeTGq/3swuJNrzeQn4TZjuDH+PnwDfT/FznA7cYmZdRCNvfuJodcvIplFSRUSkh7qPRESkh0JBRER6KBRERKSHQkFERHooFEREpIdCQUREeigURESkx/8HQyLWRWFIsPYAAAAASUVORK5CYII=",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 计算inertia随着k变化的情况\n",
    "distortions = []\n",
    "for i in range(1, 10):\n",
    "    model = KMeans(\n",
    "        n_clusters=i, init='random',\n",
    "        n_init=10, max_iter=300,\n",
    "        tol=1e-04, random_state=0\n",
    "    )\n",
    "    model.fit(X)\n",
    "    distortions.append(model.inertia_)\n",
    "# 画图可以看出k越大inertia越小，追求k越大对应用无益处\n",
    "plt.plot(range(1, 10), distortions, marker='o')\n",
    "plt.xlabel('Number of clusters')\n",
    "plt.ylabel('Distortion')\n",
    "plt.show()"
   ]
  }
 ],
 "metadata": {
  "interpreter": {
   "hash": "fe38df673a99c62a9fea33a7aceda74c9b65b12ee9d076c5851d98b692a4989a"
  },
  "kernelspec": {
   "display_name": "Python 3.7.10 64-bit ('py37': conda)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.10"
  },
  "orig_nbformat": 4
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
